#include<stdio.h>
#include<stdlib.h>
#include <string.h>
//itoa 函数用于将一个整数 value 转换为指定进制 radix 的字符串，并将结果存储在 string 数组中。radix 的范围为 2 到 36。
char *itoa(int value, char *string, int radix) {
    if (radix < 2 || radix > 36) {
        return NULL; // radix out of range
    }

    char buffer[33]; // enough to hold all digits of a 32-bit integer in base 2
    int i = 0;
    int isNegative = 0;

    if (value == 0) {
        string[0] = '0';
        string[1] = '\0';
        return string;
    }

    if (value < 0) {
        isNegative = 1;
        value = -value;
    }

   while (value > 0) {
    // 计算当前值对基数的余数
    int remainder = value % radix;
    // 将余数转换为对应的字符并存储在 buffer 中
    // 如果余数小于 10，转换为 '0' 到 '9' 之间的字符
    // 否则，转换为 'A' 到 'Z' 之间的字符
    buffer[i++] = (remainder < 10) ? ('0' + remainder) : ('A' + remainder - 10);
    // 更新 value 为当前值除以基数的商
    value /= radix;
}


    if (isNegative) {
        buffer[i++] = '-';
    }

    buffer[i] = '\0';

    // Reverse the buffer to get the correct string
    for (int j = 0; j < i / 2; j++) {
        char temp = buffer[j];
        buffer[j] = buffer[i - j - 1];
        buffer[i - j - 1] = temp;
    }

    strcpy(string, buffer);
    return string;
}


int main() {
    int n, r;
    char str[30];
    printf("请输入一个整数和进制：\n");
    scanf("%d%d", &n, &r);
    itoa(n, str, r);
    puts(str);
    return 0;
}
